function obj = serwer(ilosc_robotow)

    % tablica zawierajaca wszystkie zamowienia,
    % jakie zostana zgloszone
    % kazde zamowienie to obiekt klasy "zamowienie"
    obj.zamowienia = [];
    
    % chwila czasowa od rozpoczecia symulacji
    obj.czas = 0;
    
    % mapa magazynu:
    % 0 - obszar wolny
    % 1-999 - obszar zajety przez robota o indeksie 1-999
    % 1000 - obszar zabroniony
    % 1001+ - obszar zabroniony w ktorym jest produkt o danym indeksie,
    %         gdzie wartosc w formacie xxxyyy oznacza indeks x i y tablicy
    %         mapa
    obj.mapa = [
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        0 0   1000   1000   1000   1000   1000   1000   1000   1000      0      0   1000   1000   1000   1000   1000   1000   1000   1000 0 0;
        0 0   3004   4004   5004   6004   7004   8004   9004  10004      0      0  13004  14004  15004  16004  17004  18004  19004  20004 0 0;
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        0 0   3006   4006   5006   6006   7006   8006   9006  10006      0      0  13006  14006  15006  16006  17006  18006  19006  20006 0 0;
        0 0   3007   4007   5007   6007   7007   8007   9007  10007      0      0  13007  14007  15007  16007  17007  18007  19007  20007 0 0;
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        0 0   3009   4009   5009   6009   7009   8009   9009  10009      0      0  13009  14009  15009  16009  17009  18009  19009  20009 0 0;
        0 0   1000   1000   1000   1000   1000   1000   1000   1000      0      0   1000   1000   1000   1000   1000   1000   1000   1000 0 0;
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        0 0   1000   1000   1000   1000   1000   1000   1000   1000      0      0   1000   1000   1000   1000   1000   1000   1000   1000 0 0;
        0 0   3014   4014   5014   6014   7014   8014   9014  10014      0      0  13014  14014  15014  16014  17014  18014  19014  20014 0 0;
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        0 0   3016   4016   5016   6016   7016   8016   9016  10016      0      0  13016  14016  15016  16016  17016  18016  19016  20016 0 0;
        0 0   3017   4017   5017   6017   7017   8017   9017  10017      0      0  13017  14017  15017  16017  17017  18017  19017  20017 0 0;
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        0 0   3019   4019   5019   6019   7019   8019   9019  10019      0      0  13019  14019  15019  16019  17019  18019  19019  20019 0 0;
        0 0   1000   1000   1000   1000   1000   1000   1000   1000      0      0   1000   1000   1000   1000   1000   1000   1000   1000 0 0;
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0 0 0;
        ]';
    % (przeniesiona na zewnatrz jako zmienna globalna)

    % tablica zawierajaca w kolejnych wierszach pola nalezace do kolejnych
    % korytarzy
    obj.korytarze = [
        pole(3,5) pole(4,5) pole(5,5) pole(6,5) pole(7,5) pole(8,5) pole(9,5) pole(10,5);
        pole(3,8) pole(4,8) pole(5,8) pole(6,8) pole(7,8) pole(8,8) pole(9,8) pole(10,8);
        pole(3,15) pole(4,15) pole(5,15) pole(6,15) pole(7,15) pole(8,15) pole(9,15) pole(10,15);
        pole(3,18) pole(4,18) pole(5,18) pole(6,18) pole(7,18) pole(8,18) pole(9,18) pole(10,18);
        pole(13,5) pole(14,5) pole(15,5) pole(16,5) pole(17,5) pole(18,5) pole(19,5) pole(20,5);
        pole(13,8) pole(14,8) pole(15,8) pole(16,8) pole(17,8) pole(18,8) pole(19,8) pole(20,8);
        pole(13,15) pole(14,15) pole(15,15) pole(16,15) pole(17,15) pole(18,15) pole(19,15) pole(20,15);
        pole(13,18) pole(14,18) pole(15,18) pole(16,18) pole(17,18) pole(18,18) pole(19,18) pole(20,18);
        ];
    
     % tablica 16x6 zawierajaca indeksy robotow skolejkowanych do kazdego
     % z korytarzy z obu stron korytarza (8 korytarzy * 2 wjazdy, max <ilosc_robotow> robotow w kolejce)
     % numeracja korytarzy kolumnami, tzn. najpierw korytarze w lewej czesci magazynu,
     % potem w prawej, z góry na dół
     % struktura:
     % [ zachodni wjazd korytarza 1;
     %   zachodni wjazd korytarza 2;
     %   ... 
     %   wschodni wjazd korytarza 1; ... ]
     if(ilosc_robotow==0) ilosc_robotow=1; end;
     obj.kolejki = zeros(16,ilosc_robotow);
     
     % tablica zawierająca pola kas - miejsca, gdzie robot powinien sie
     % ustawic, aby rozpoczac rozladunek przedmiotow
     obj.kasy = [
         4  22
         9  22
         14 22
         19 22
         ];
